package Persistencia;

import Model.*;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;


public class AdministradorPersistenciaTipo {

	private static AdministradorPersistenciaTipo instancia;
	
	public static AdministradorPersistenciaTipo getInstancia()
	{
		if (instancia== null)
			instancia =new AdministradorPersistenciaTipo();
		return instancia;
	}
	
	public AdministradorPersistenciaTipo() {
		// TODO Auto-generated constructor stub
	}
	
	public Tipo getTipo(String idTipo)
	{
		Tipo t = null; 
		Connection con = PoolConexiones.getPoolConexiones().getConnection();
		
		try
		{
			String senten = "SELECT id,tipo,costoXDia,kmExcedente from tipos where id = ?" ;
			PreparedStatement ps = null;
			ps = con.prepareStatement(senten);
			ps.setString(1,idTipo);
			ResultSet result = ps.executeQuery();
			while (result.next())
			{							
				t = new Tipo(result.getString("id")
						,result.getString("tipo")
						,result.getFloat("costoXDia")
						,result.getFloat("kmExcedente"));
			}
			
			PoolConexiones.getPoolConexiones().realeaseConnection(con);
			return t;
		}
	      catch( SQLException e ) 
	      {
				System.out.println("Error al consultar Tipo: " + e.getMessage());
				e.printStackTrace();
				PoolConexiones.getPoolConexiones().realeaseConnection(con);
	      }
	      return t;
	}
	public ArrayList<Tipo> getTipos()
	{
		ArrayList<Tipo> listaTipos = new ArrayList<Tipo>();
		Tipo t = null;
		Connection con = PoolConexiones.getPoolConexiones().getConnection();
		
		try
		{
			String senten = "SELECT id,tipo,costoXDia,kmExcedente from tipos" ;
			PreparedStatement ps = null;
			ps = con.prepareStatement(senten);
			ResultSet result = ps.executeQuery();
			while (result.next())
			{							
				t = new Tipo(result.getString("id")
						,result.getString("tipo")
						,result.getFloat("costoXDia")
						,result.getFloat("kmExcedente"));
				listaTipos.add(t);
			}
			
			PoolConexiones.getPoolConexiones().realeaseConnection(con);
			return listaTipos;
		}
	      catch( SQLException e ) 
	      {
				System.out.println("Error al consultar Tipo: " + e.getMessage());
				e.printStackTrace();
				PoolConexiones.getPoolConexiones().realeaseConnection(con);
	      }
	      return listaTipos;
	}



public void update(Float costoxdia,Float kmexcedente,String id)
{
	//Obtener conexion BD 
	Connection con = PoolConexiones.getPoolConexiones().getConnection();
	
	try
	{
	
		//Preparar sentencia insert en tabla destino
		String senten = "UPDATE tipos set costoXDia=? , kmExcedente = ?  where id = ?" ;
		PreparedStatement ps = null;
		ps = con.prepareStatement(senten);
		ps.setDouble(1,costoxdia);
     	ps.setDouble(2,kmexcedente);
		ps.setString(3,id);
		
		ps.execute();
		
		PoolConexiones.getPoolConexiones().getConnection();
		
	}
      catch( SQLException e ) 
      {
			System.out.println("Error al actualizar el tipo: " + e.getMessage());
			e.printStackTrace();
			 PoolConexiones.getPoolConexiones().getConnection();
      }
      
}

}